// 约瑟夫环问题
// CountOff
// 6-7 报数 (20分)
// 报数游戏是这样的：有n个人围成一圈，按顺序从1到n编好号。从第一个人开始报数，报到m（<n）的人退出圈子；下一个人从1开始报数，报到m的人退出圈子。如此下去，直到留下最后一个人。

// 本题要求编写函数，给出每个人的退出顺序编号。

// 函数接口定义：
// void CountOff( int n, int m, int out[] );

// 其中n是初始人数；m是游戏规定的退出位次（保证为小于n的正整数）。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的，所以第i个位置上的人是第out[i-1]个退出的。

// 输入样例：
// 11 3

// 输出样例：
// 4 10 1 7 5 2 11 9 3 6 8

// 数组模拟法
#include <stdio.h>
#define MAXN 20

void CountOff(int n, int m, int out[]);

int main()
{
    int out[MAXN], n, m;
    int i;

    scanf("%d %d", &n, &m);
    CountOff(n, m, out);
    for (i = 0; i < n; i++)
        printf("%d ", out[i]);
    printf("\n");

    return 0;
}

void CountOff(int n, int m, int out[])
{
    int a[MAXN] = {0}, outN = 0, cnt = 0;
    for (int i = 0; i < n; i++)
    {
        a[i] = 1;
    }
    while (outN < n)
    {
        for (int i = 0; i < n; i++)
        {
            if (a[i] == 1)
            {
                cnt++;
            }
            if (cnt == m)
            {
                outN++;
                out[i] = outN;
                cnt = a[i] = 0;
            }
            if (outN == n)
            {
                break;
            }
        }
    }
}

// 自己写的垃圾代码
// #include <stdio.h>
// #define MAXN 20

// void CountOff( int n, int m, int out[] );

// int main()
// {
//     int out[MAXN], n, m;
//     int i;

//     scanf("%d %d", &n, &m);
//     CountOff( n, m, out );
//     for ( i = 0; i < n; i++ )
//         printf("%d ", out[i]);
//     printf("\n");

//     return 0;
// }

// void CountOff( int n, int m, int out[] )
// {
//     int a[MAXN], a1[MAXN], a2[MAXN], cnt = 0, out_idx;
//     for (int i = 0; i < n; i++)
//     {
//         a[i] = i + 1;
//     }
//     int len_a = n;
//     while (len_a > 1)
//     {
//         cnt++;
//         out_idx = (m - 1) % len_a;
//         out[a[out_idx] - 1] = cnt;
//         for (int j = 0; j < out_idx; j++)
//         {
//             a1[j] = a[j];
//         }
//         for (int k = out_idx + 1; k < len_a; k++)
//         {
//             a2[k] = a[k];
//         }
//         for (int i = 0; i < len_a - out_idx - 1; i++)
//         {
//             a[i] = a2[i + out_idx + 1];
//         }
//         for (int j = len_a - out_idx - 1; j < len_a - 1; j++)
//         {
//             a[j] = a1[j - (len_a - out_idx - 1)];
//         }
//         len_a--;
//     }
//     out[a[0] - 1] = ++cnt;
// }